﻿#pragma once
#ifndef XL_XEXPAND_DWEBX_LOGGER_H
//@隐藏{
#define XL_XEXPAND_DWEBX_LOGGER_H
//@隐藏}
#ifdef WEBOAT_EXPORTS


#else
//@隐藏{
#ifndef SPDLOG_LEVEL_TRACE
#define SPDLOG_LEVEL_TRACE 0
#endif
#ifndef SPDLOG_LEVEL_DEBUG
#define SPDLOG_LEVEL_DEBUG  1
#endif
#ifndef SPDLOG_LEVEL_INFO
#define SPDLOG_LEVEL_INFO   2
#endif
#ifndef SPDLOG_LEVEL_WARN
#define SPDLOG_LEVEL_WARN  3
#endif
#ifndef SPDLOG_LEVEL_ERROR
#define SPDLOG_LEVEL_ERROR    4
#endif
#ifndef SPDLOG_LEVEL_CRITICAL
#define SPDLOG_LEVEL_CRITICAL  5
#endif
#ifndef SPDLOG_LEVEL_OFF
#define SPDLOG_LEVEL_OFF  6
#endif

namespace spdlog {
	class logger{};
};

//@隐藏}

#endif

//@分组{ 枚举值

//@别名 Wo日志等级
enum WoLogLevel {
	//@别名 Wo日志等级_跟踪
	Trace = SPDLOG_LEVEL_TRACE,
	//@别名 Wo日志等级_调试
	Debug = SPDLOG_LEVEL_DEBUG,
	//@别名 Wo日志等级_信息
	Info = SPDLOG_LEVEL_INFO,
	//@别名 Wo日志等级_警告
	Warn = SPDLOG_LEVEL_WARN,
	//@别名 Wo日志等级_错误
	Error = SPDLOG_LEVEL_ERROR,
	//@别名 Wo日志等级_关键
	Critical = SPDLOG_LEVEL_CRITICAL,
};

//@分组}
//@分组{ 日志类

//@别名 Wo日志指针
typedef std::shared_ptr<spdlog::logger> WoLoggetPtr;

////@别名 Wo日志类
//class WoLoggetClass {
//
//};

//@分组}
//@分组{ 导出函数

//@备注 创建写入到文件的日志类
//@参数 日志类名 
//@参数 文件名 
//@别名 Web_日志_创建文件日志(日志类名,文件名)
WEBOAT_MODIFICATION WoLoggetPtr WEBOAT_API WoLoggerCreateFileLogger(const char* loggerName, const char* fileName);
//@备注 创建写入到控制台流的日志类
//@参数 日志类名 
//@别名 Web_日志_创建控制台日志(日志类名)
WoLoggetPtr WEBOAT_API WoLoggerCreateConsoleLogger(const char* loggerName);

//@备注 参见 日志教程 > 自定义日志输出格式 http://dwiki.hyiy.top/@weboat 
//@参数 日志类名 
//@参数 文件名 
//@别名 Web_日志_置输出格式(日志类名,日志格式)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSetPattern(WoLoggetPtr logPtr, const char* pattern);

//@参数 日志指针 创建的日志指针
//@参数 输出等级 Wo日志等级_ / WoLogLevel::
//@别名 Web_日志_置输出等级(日志指针,输出等级)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSetLevel(WoLoggetPtr logPtr, WoLogLevel level);

//@备注 输出日志,等级为跟踪
//@别名 Web_日志_输出_跟踪(日志指针,内容)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSendTrace(WoLoggetPtr logPtr, const char* msg);
//@备注 输出日志,等级为调试
//@别名 Web_日志_输出_调试(日志指针,内容)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSendDebug(WoLoggetPtr logPtr, const char* msg);
//@备注 输出日志,等级为信息
//@别名 Web_日志_输出_信息(日志指针,内容)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSendInfo(WoLoggetPtr logPtr, const char* msg);
//@备注 输出日志,等级为警告
//@别名 Web_日志_输出_警告(日志指针,内容)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSendWarn(WoLoggetPtr logPtr, const char* msg);
//@备注 输出日志,等级为错误
//@别名 Web_日志_输出_错误(日志指针,内容)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSendError(WoLoggetPtr logPtr, const char* msg);
//@备注 输出日志,等级为关键
//@别名 Web_日志_输出_关键(日志指针,内容)
WEBOAT_MODIFICATION void WEBOAT_API WoLoggerSendCritical(WoLoggetPtr logPtr, const char* msg);

//@分组}
#endif
